LUDMILA MARIA RATTIS TEIXEIRA

Exerccios 9 - Construo de Funes Simples
Exerccio Programar 1.: QUE FRIO!

1-)Construa uma funo que calcula automaticamente o valor de graus 
Celsius, sabendo-se a temperatura em Fahrenheit. C = 5/9 * (F- 32) 

##Programar 1

nome.da.funo = function(x)      ## em que x  a temperatura em graus Fahrenheit 
{
res = 5/9*(x-32)
cat("Resultado =",res,"C")
}
##Testando a funo

nome.da.funo(236)
> nome.da.funo(236)
Resultado = 113.3333 C> 


Exerccio Programar 2. : Anlise exploratria simultnea de duas 
variveis

2-)Crie uma funo para sada grfica de anlises exploratrias de 
duas variveis. Essa sada pode ter por exemplo boxplot, histograma, 
qnorm e y por x. A funo deve permitir a entrada de dois objetos 
vetores de mesmo tamanho (x e y). Caso os valores de x e y forem 
desenhados em um mesmo grfico, defina cores diferentes. As 
legendas devem ser em portugus e a sada (return) deve apresentar 
o sumrio das duas variveis e o coeficiente de correlao. DICAS: 

Para histogramas com variveis em um mesmo grfico pode ser 
utilizada a funo multhist() do pacote plotrix. Baixe e instale 
o pacote e veja o help da funo

Utilize o cdigo do eda.shape, apresentado em aula como ponto de partida. 

Lembre-se que em algumas funes grficas o argumento add=TRUE, adiciona elementos no grfico no anterior. 

##Programar 2
nome.funo = function(x,y,name=c(a,b))
{
par(mfrow=c(2,2))
par(bty="l")
plot(y~x,main=paste(name[2],"x",name[1]))
abline(lm(y~x),col=2)
hist(x,col=2,main=paste("x",name[1]),ylab="Frequencia")
hist(y,col=3,main=paste("y",name[2]),ylab="Frequencia")
boxplot(y~x,main="Boxplot",names=nome)
summary.x=summary(x)
summary.y=summary(y)
modelo=summary(lm(x~y))
res=list(summary.x,summary.y,modelo)
names(res)=c(name[1],name[2],"correlao")
return(res)
}
init.h=c(600,700,800,950,1100,1300,1500)
h.d.=c(253,337,395,451,495,534,573)
head(iris)
nome.funo(iris$Sepal.Length,iris$Sepal.Width,c(iris$Sepal.Length,iris$Sepal.Width))
#######desespero...aaaaaaaaaaaaaaah!
library(plotrix)
nome.funo = function(x,y,name=c(a,b))
{
par(mfrow=c(2,2))
par(bty="l")
par(adj=1)
plot(y~x,main=paste(name[2],"x",name[1]))
abline(lm(y~x),col=2)
par(adj=1)
multhist(list(x,y), main='Histograma', xlab="x",ylab="Frequencia", col=c(2,3)) 
boxplot(y~x,main="Boxplot",col="lightgray")
summary.x=summary(x)
summary.y=summary(y)
modelo=summary(lm(x~y))
res=list(summary.x,summary.y,modelo)
names(res)=c(name[1],name[2],"correlao")
return(res)
}
####Testando
head(iris)
str(iris)
table(iris$Sepal.Length)
table(iris$Sepal.Width)
length(iris$Sepal.Length)
length(iris$Sepal.Width)
nome.funo(iris$Sepal.Length,iris$Sepal.Width,c(iris$Sepal.Length,iris$Sepal.Width))
?boxplot

##Definitivamente, no deu certo por o nome das coordenadas no boxplot...  

Programar 3: ndices de Diversidade de Espcies
Construa funes para computar os seguintes ndices de diversidade 
de espcies: * ndice de Shannon: H = - sum(pi * ln(pi))  ndice 
de Simpson: D = sum(pi^2) 

onde pi  a proporo da espcie i em relao ao nmero total de 
indivduos na amostra (ni/N) Considere que o objeto de entrada na 
funo ser uma matriz com a abundncia das espcies nas linhas e 
parcelas amostradas nas colunas. Considere a possibilidade de 
haver NA nessa matrix e que esse ser removido automaticamente. 

indices=function(x)
{
pi=x[,2:ncol(x)] / apply(x[,2:ncol(x)],FUN=sum,MARGIN=2,na.rm=T)
H=-apply(pi*log(pi,base=exp(1)),FUN=sum,MARGIN=2,na.rm=T)
D=apply(pi^2,FUN=sum,MARGIN=2,na.rm=T)
tabela=data.frame(H,D)
return(tabela)
}
parcela.1=abs(round(rnorm(15,4,3)))
parcela.2=abs(round(rnorm(15,3,4)))
parcela.3=abs(round(rnorm(15,6,3)))
parcela.4=abs(round(rnorm(15,4.3,2.1)))
parcela.5=abs(round(rnorm(15,7.6,3.7)))
nesp=rep("especie",75)
lista=data.frame(nesp,parcela.1,parcela.2,parcela.3,parcela.4,parcela.5) 
lista
indices(lista)

##Rodooooooooooooooooooooooooou!!!

##Testando:

  ## Shannon na unha:

lista.2=indices(lista)
- sum(pi * ln(pi)) 
pi=lista[,2:6] / apply(lista[,2:6],FUN=sum,MARGIN=2,na.rm=T)
pi

H=-apply(pi*log(pi,base=exp(1)),FUN=sum,MARGIN=2,na.rm=T)
H

D=apply(pi^2,FUN=sum,MARGIN=2,na.rm=T)
D

par(mfrow=c(1,1),adj=0.5)
plot(lista.2$H~lista.2$D)
modelo.2=lm(lista.2$H~lista.2$D)
abline(lm(lista.2$H~lista.2$D),col="pink")
